#include <iostream>
#include <chrono>
#include "SimpleThreadPool.hpp" // 假设你已经保存了上面的代码

// 一个简单的任务函数
void task_function(int id) {
    std::cout << "Task " << id << " started by thread " << std::this_thread::get_id() << std::endl;
    std::this_thread::sleep_for(std::chrono::seconds(1));
    std::cout << "Task " << id << " finished." << std::endl;
}

int main() {
    // 创建一个有 4 个工作线程的线程池
    SimpleThreadPool pool(4);

    // 提交 8 个任务到线程池
    for (int i = 0; i < 8; ++i) {
        pool.Enqueue(task_function, i);
    }

    std::cout << "All tasks submitted." << std::endl;
    std::cout << "Main thread is waiting for tasks to complete..." << std::endl;

    // 当 main 函数结束时，pool 的析构函数会被自动调用。
    // 析构函数会等待所有任务执行完毕，然后才允许程序退出。
    return 0;
}